package parsing;

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Vector;

import javax.swing.Box;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.SwingConstants;
import javax.swing.SwingWorker;

@SuppressWarnings("serial")
public class IHM extends JFrame {
	
	JComboBox jcb_seulement;
	JRadioButton jrb_tout,jrb_seulement;
	JLabel jl_dl;
	JButton jb_dl;
	public IHM(String titre) {
		/** Titre **/
		super(titre);
		/** Événement **/
		//ActionListener action = new Event(this);
		/** Barre de Menu **/
		creeBarreDeMenu();
		/** Interface **/
		creeInterface();
		/** Zone de notification **/
		menuContextuel();
		/** Fenêtre **/
		creeFenetre();
	}
	public final void creeBarreDeMenu() {
		/** Création des éléments **/
		/** Paramétrage des éléments **/
		/** Action sur les éléments **/
		/** Montage des éléments **/
	}
	public final void creeInterface() {
		Vector<String> v =new Vector<String>();
		//v.add("TOUT");
		v.add(Main.DATA[0]);
		v.add(Main.DATA[1]);
		v.add(Main.DATA[2]);
		/** Création des éléments **/
		JLabel jl_projet = new JLabel("<html><h1 style='color:#4a86e8;'>Projet de bioinformatique</h1><p>&nbsp;</p></html>",SwingConstants.CENTER);
		JPanel jp_centre = new JPanel(new BorderLayout());
			JPanel jp_centre2 = new JPanel(new BorderLayout());
				JPanel jp_choix = new JPanel(new BorderLayout());
					JLabel jl_instr = new JLabel("Choissiez les fichiers à télécharger :");
					JPanel jp_choix2 = new JPanel(new BorderLayout());
						JPanel jp_all = new JPanel(new FlowLayout(FlowLayout.LEFT));
							jrb_tout = new JRadioButton("Tout télécharger");
						JPanel jp_seulement = new JPanel(new FlowLayout(FlowLayout.LEFT));
							jrb_seulement = new JRadioButton("Seulement :");
							jcb_seulement = new JComboBox(v);
				JPanel jp_bottom = new JPanel(new BorderLayout());
				jl_dl = new JLabel("<html><p style='font-style:italic;'>Téléchargement en cours...</p></html>");
			jb_dl = new JButton("Télécharger");
			JLabel jl_authors = new JLabel("<html><p>&nbsp;</p><p style='font-style:italic;color:#9a60ff;'>Marie-Hélène Goddet et Damien Finck&nbsp;</p></html>",SwingConstants.RIGHT);
		/** Paramétrage des éléments **/
		ButtonGroup group = new ButtonGroup();
		group.add(jrb_tout);
		group.add(jrb_seulement);
		
		jrb_tout.setSelected(true);
		jcb_seulement.setEnabled(false);
		
		jl_dl.setVisible(false);
		/** Action sur les éléments **/
		jrb_tout.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent arg0) {
				if (jrb_seulement.isSelected()) {
					jcb_seulement.setEnabled(true);
				} else {
					jcb_seulement.setEnabled(false);
				}
			}
		});
		jrb_seulement.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent arg0) {
				if (jrb_seulement.isSelected()) {
					jcb_seulement.setEnabled(true);
				} else {
					jcb_seulement.setEnabled(false);
				}
			}
		});
		jb_dl.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				jrb_seulement.setEnabled(false);
				jrb_tout.setEnabled(false);
				jb_dl.setEnabled(false);
				jcb_seulement.setEnabled(false);
				jl_dl.setVisible(true);
			
				ThreadDecale td;
				td = new ThreadDecale();
				td.execute();
			}
		});
		/** Montage des éléments **/
		this.add(jl_projet, BorderLayout.NORTH);
		this.add(jp_centre, BorderLayout.CENTER);
			jp_centre.add(jp_centre2,BorderLayout.CENTER);
				jp_centre2.add(jp_choix,BorderLayout.NORTH);
					jp_choix.add(jl_instr,BorderLayout.NORTH);
					jp_choix.add(Box.createHorizontalStrut(50),BorderLayout.WEST);
					jp_choix.add(jp_choix2,BorderLayout.CENTER);
						jp_choix2.add(jp_all,BorderLayout.NORTH);
							jp_all.add(jrb_tout);
						jp_choix2.add(jp_seulement,BorderLayout.SOUTH);
							jp_seulement.add(jrb_seulement);
							jp_seulement.add(jcb_seulement);
				jp_centre2.add(jp_bottom,BorderLayout.SOUTH);
					jp_bottom.add(Box.createVerticalStrut(20),BorderLayout.NORTH);
					jp_bottom.add(jl_dl,BorderLayout.CENTER);
					jp_bottom.add(Box.createVerticalStrut(20),BorderLayout.SOUTH);
			jp_centre.add(jb_dl,BorderLayout.SOUTH);
		this.add(jl_authors,BorderLayout.SOUTH);
	}
	public final void menuContextuel() {
		/** Création des éléments **/
		/** Paramétrage des éléments **/
		/** Action sur les éléments **/
		/** Montage des éléments **/
	}
	public final void creeFenetre() {
		/* Événement */
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Action de fermeture
		// this.addWindowListener(window); // Listener sur la fenêtre

		/* Design de la fenêtre */
		this.setUndecorated(false); // Affichage de la barre de titre dans la fenêtre
		// this.setLayout(new FlowLayout()); // Layout par défaut pour JFrame : BorderLayout
		// this.setIconImage(Resources.getImage("images/icon.png",Exemple.class)); // Image dans la barre des tâches

		/* Dimension (soit pack() soit setSize(x,y)) */
		//this.pack(); // Auto-dimensionner
		this.setSize(400,290); //Dimensionner la fenêtre

		/* Position */
		this.setLocationRelativeTo(null); // Positionner la fenêtre
		this.setResizable(false); // Redimensionnement de la fenêtre
		// this.setExtendedState(MAXIMIZED_BOTH); // Mettre en mode taille écran

		/* Visibilité de la fenêtre */
		this.setAlwaysOnTop(false); // Toujours au premier plan
		this.setVisible(true); // Rendre la fenêtre visible
	}
	public void finish() {
		jrb_seulement.setEnabled(true);
		jrb_tout.setEnabled(true);
		jb_dl.setEnabled(true);
		if (jrb_seulement.isSelected()) {
			jcb_seulement.setEnabled(true);
		} else {
			jcb_seulement.setEnabled(false);
		}
		jl_dl.setVisible(false);
	}
	class ThreadDecale extends SwingWorker<Object, Object> {
		@Override
		protected Object doInBackground() throws Exception {
			if (jrb_tout.isSelected()) {
				Main.start(0);
			}
			else {
				Main.start(jcb_seulement.getSelectedIndex()+1);
			}
			finish();
			return null;
		}
	}
}